#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

#endregion

namespace Weazel.Gezel.Model
{

  /// <summary>
  /// Stimuli refers to external inputs to the
  /// system being modelled, typically used for
  /// test and verification. This class stores
  /// the filename to read the inputs from and 
  /// the signal to output them on.
  /// </summary>
  public class Stimulus : AbstractEntity<system>
  {
    /// <summary>
    /// Name of the signal which the stimuli
    /// is generated to
    /// </summary>
    private string signalRef;
    public string SignalRef
    {
      get
      {
        return signalRef;
      }
    }

    /// <summary>
    /// Name of the file which the stimuli values
    /// are read from.
    /// </summary>
    private string filename;
    public string Filename
    {
      get
      {
        return filename;
      }
    }

		public Stimulus(
			system parent, 
			string name, 
			string filename, 
			string signalRef, 
			Position startPosition, 
			Position endPosition
		)
			: 
      this(parent, name, filename, signalRef)
    {
			this.startPosition = startPosition;
			this.endPosition = endPosition;
    }

    /// <summary>
    /// Constructs and fully initializes a new Stimuli.
    /// </summary>
    /// <param name="parent">the parent system</param>
    /// <param name="name">autogenerated name</param>
    /// <param name="filename">filename to read values from</param>
    /// <param name="signalRef">name of output signal</param>
    public Stimulus(system parent, string name, string filename, string signalRef) : base(parent, name)
    {
      this.filename = filename;
      this.signalRef = signalRef;
    }
  }
}